common.skill

LINQ এ ফাংশন এবং ডেলিগেট (Functions and Delegates in LINQ)

Microsoft Technologies - লিংক (LinQ)
177
177

LINQ (Language Integrated Query) এ ফাংশন এবং ডেলিগেট দুটি অত্যন্ত গুরুত্বপূর্ণ বিষয়, কারণ এগুলো LINQ কুয়েরি এক্সপ্রেশনগুলোকে আরও শক্তিশালী ও নমনীয় করে তোলে। LINQ ব্যবহারের সময় বিভিন্ন ধরণের ফাংশন এবং ডেলিগেট ব্যবহার করা হয় যা কুয়েরি অপারেশনগুলোর মধ্যে লজিক, কন্ডিশন বা অন্য কাস্টম অপারেশনস ইনজেক্ট করতে সাহায্য করে।


ফাংশন (Functions) in LINQ

LINQ কুয়েরি এক্সপ্রেশনগুলোতে ফাংশন ব্যবহার করা হয় বিভিন্ন অপারেশন যেমন filtering, sorting, grouping, aggregation এবং আরও অনেক কাস্টম লজিক প্রয়োগ করতে। এটি সাধারণত lambda expressions বা anonymous methods এর মাধ্যমে করা হয়। LINQ এ ফাংশন ব্যবহার করা হয় মূলত where, select, order by, group by ইত্যাদি অপারেশনের মধ্যে।

ফাংশন (Functions) দিয়ে LINQ কুয়েরি

ধরা যাক, আমাদের একটি লিস্ট আছে Employee অবজেক্টসের এবং আমরা কিছু কাস্টম ফিল্টারিং ফাংশন ব্যবহার করব:

using System;
using System.Collections.Generic;
using System.Linq;

class Employee
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public double Salary { get; set; }
}

class Program
{
    static void Main()
    {
        List<Employee> employees = new List<Employee>
        {
            new Employee { ID = 1, Name = "Alice", Age = 30, Salary = 50000 },
            new Employee { ID = 2, Name = "Bob", Age = 35, Salary = 60000 },
            new Employee { ID = 3, Name = "Charlie", Age = 40, Salary = 70000 },
            new Employee { ID = 4, Name = "David", Age = 25, Salary = 45000 }
        };

        // ফাংশন ব্যবহার করে employees list ফিল্টার করা
        var highEarners = employees.Where(e => e.Salary > 50000).ToList();

        // ফলাফল প্রদর্শন
        foreach (var employee in highEarners)
        {
            Console.WriteLine($"{employee.Name} earns {employee.Salary}");
        }
    }
}

আউটপুট:

Bob earns 60000
Charlie earns 70000

এখানে Where মেথডের মধ্যে একটি lambda function ব্যবহার করা হয়েছে যেটি Salary এর ভিত্তিতে filtering করেছে। LINQ তে ফাংশন ব্যবহার করে কাস্টম ফিল্টার বা অপারেশনগুলো খুব সহজে করা যায়।


ডেলিগেট (Delegates) in LINQ

ডেলিগেট হলো একটি টাইপ সেফ ফাংশন পয়েন্টার, যার মাধ্যমে আপনি একটি ফাংশনকে অন্য ফাংশন বা মেথডে পাস করতে পারেন। LINQ তে delegates ব্যবহার করে আপনি কিছু অপারেশন কাস্টমাইজ করতে পারেন যেমন sorting, searching, বা filtering। LINQ ফাংশনগুলোর অনেকটাই ডেলিগেট প্যারামিটার হিসেবে কাজ করে, বিশেষ করে Where, Select, OrderBy ইত্যাদি মেথডগুলোতে।

ডেলিগেট ব্যবহার করে LINQ কুয়েরি

using System;
using System.Collections.Generic;
using System.Linq;

class Employee
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public double Salary { get; set; }
}

class Program
{
    // ডেলিগেট ডিক্লেয়ারেশন
    public delegate bool EmployeeFilter(Employee employee);

    static void Main()
    {
        List<Employee> employees = new List<Employee>
        {
            new Employee { ID = 1, Name = "Alice", Age = 30, Salary = 50000 },
            new Employee { ID = 2, Name = "Bob", Age = 35, Salary = 60000 },
            new Employee { ID = 3, Name = "Charlie", Age = 40, Salary = 70000 },
            new Employee { ID = 4, Name = "David", Age = 25, Salary = 45000 }
        };

        // ডেলিগেটের মাধ্যমে filtering
        EmployeeFilter filter = e => e.Age > 30; // কাস্টম ফিল্টারিং
        var filteredEmployees = employees.Where(e => filter(e)).ToList();

        // ফলাফল প্রদর্শন
        foreach (var employee in filteredEmployees)
        {
            Console.WriteLine($"{employee.Name} is older than 30.");
        }
    }
}

আউটপুট:

Bob is older than 30.
Charlie is older than 30.

এখানে, আমরা একটি delegate EmployeeFilter তৈরি করেছি যা Employee অবজেক্টে কাজ করবে। তারপর আমরা LINQ Where মেথডে সেই ডেলিগেটটি পাস করেছি, যা Age > 30 শর্তে filtering করছে। LINQ ডেলিগেট ব্যবহার করে আরো কাস্টম লজিক প্রয়োগ করা সম্ভব।


LINQ এবং Lambda Expressions

Lambda expressions হল সংক্ষিপ্ত ফাংশন যেগুলি delegate হিসাবে ব্যবহৃত হয়। LINQ-এ lambda expressions খুবই গুরুত্বপূর্ণ, কারণ এগুলি ফাংশন বা ডেলিগেট হিসেবে অপারেশনগুলিকে সরাসরি কুয়েরি এক্সপ্রেশন বা মেথড চেইনে ব্যবহার করতে সাহায্য করে।

Lambda Expression উদাহরণ

using System;
using System.Collections.Generic;
using System.Linq;

class Employee
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public double Salary { get; set; }
}

class Program
{
    static void Main()
    {
        List<Employee> employees = new List<Employee>
        {
            new Employee { ID = 1, Name = "Alice", Age = 30, Salary = 50000 },
            new Employee { ID = 2, Name = "Bob", Age = 35, Salary = 60000 },
            new Employee { ID = 3, Name = "Charlie", Age = 40, Salary = 70000 },
            new Employee { ID = 4, Name = "David", Age = 25, Salary = 45000 }
        };

        // Lambda expression দিয়ে salary অনুযায়ী filter করা
        var highEarners = employees.Where(e => e.Salary > 55000).Select(e => e.Name);

        foreach (var name in highEarners)
        {
            Console.WriteLine($"{name} earns more than 55000.");
        }
    }
}

আউটপুট:

Bob earns more than 55000.
Charlie earns more than 55000.

এখানে, lambda expression (e => e.Salary > 55000) ব্যবহার করা হয়েছে, যা সহজ এবং পাঠযোগ্যভাবে Where মেথডের মধ্যে প্রয়োগ করা হয়েছে।


সারাংশ

  • ফাংশন এবং ডেলিগেট LINQ এর অত্যন্ত গুরুত্বপূর্ণ অংশ যা কাস্টম কুয়েরি অপারেশন তৈরিতে সাহায্য করে।
  • ফাংশন ব্যবহার করে বিভিন্ন filtering, sorting, projection অপারেশন করা যায়।
  • ডেলিগেট LINQ কুয়েরির মধ্যে কাস্টম লজিক প্রয়োগ করতে সাহায্য করে।
  • Lambda expressions LINQ-এর আরও সংক্ষিপ্ত এবং কার্যকরী কোড লেখার পদ্ধতি।

LINQ এর এই শক্তিশালী বৈশিষ্ট্যগুলো আপনার কুয়েরি অপারেশনগুলোকে আরও নমনীয়, শক্তিশালী এবং সহজবোধ্য করতে সহায়ক।

common.content_added_by

Func এবং Action Delegates

187
187

Delegate হল একটি টাইপ সেফ পদ্ধতি যা কোনো মেথডকে রেফারেন্স (references) হিসেবে ব্যবহার করার সুযোগ দেয়। C#-এ Func এবং Action হল দুটি জনপ্রিয় ডেলিগেট টাইপ যা একটি মেথডকে প্যারামিটার হিসেবে গ্রহণ করে এবং তা কার্যকর করার জন্য ব্যবহৃত হয়।

Func এবং Action দুটি মেকানিজম আছে যেগুলি কোডের পুনঃব্যবহারযোগ্যতা এবং কার্যকারিতা বৃদ্ধি করতে সাহায্য করে, বিশেষত যখন আপনি কোডে নির্দিষ্ট লজিক প্রেরণ করতে চান।


Func Delegate

Func ডেলিগেট একটি ধরনের ডেলিগেট যা একটি ভ্যালু রিটার্ন করে এবং একটি অথবা একাধিক ইনপুট প্যারামিটার গ্রহণ করতে পারে। এটি ০ থেকে ১৬ পর্যন্ত প্যারামিটার নিতে পারে এবং অবশ্যই একটি রিটার্ন ভ্যালু প্রদান করবে।

১. Func Delegate এর গঠন

Func<in T1, in T2, ..., TResult> funcName;
  • T1, T2,...: ইনপুট প্যারামিটার টাইপ।
  • TResult: রিটার্ন টাইপ।

২. উদাহরণ: Func Delegate

এখানে একটি Func ডেলিগেট ব্যবহার করা হয়েছে যা দুটি সংখ্যার যোগফল প্রদান করবে:

using System;

class Program
{
    static void Main()
    {
        // Func ডেলিগেট তৈরি, দুটি ইনপুট প্যারামিটার (int) এবং একটি রিটার্ন টাইপ (int)
        Func<int, int, int> addNumbers = (a, b) => a + b;

        // Func ডেলিগেট ব্যবহার
        int result = addNumbers(5, 10);
        
        Console.WriteLine($"The sum of 5 and 10 is: {result}");
    }
}

আউটপুট:

The sum of 5 and 10 is: 15

এখানে, Func<int, int, int> একটি ডেলিগেট যা দুটি int ইনপুট নেবে এবং একটি int রিটার্ন করবে।

৩. অনেক প্যারামিটার সহ Func

Func ডেলিগেট অনেক ইনপুট প্যারামিটারও গ্রহণ করতে পারে (যেমন ১টি, ২টি, ৩টি বা তারও বেশি) এবং একটি রিটার্ন টাইপও থাকতে পারে।

Func<int, int, int, int> multiplyNumbers = (a, b, c) => a * b * c;
int result = multiplyNumbers(2, 3, 4);
Console.WriteLine($"The product is: {result}");

আউটপুট:

The product is: 24

এখানে, Func<int, int, int, int> তিনটি ইনপুট প্যারামিটার এবং একটি int রিটার্ন করেছে।


Action Delegate

Action ডেলিগেটের ক্ষেত্রে কোনো রিটার্ন ভ্যালু থাকে না। এটি শুধুমাত্র ইনপুট প্যারামিটার নেয় (০ থেকে ১৬টি ইনপুট প্যারামিটার) এবং কোনো রিটার্ন ভ্যালু প্রদান করে না।

১. Action Delegate এর গঠন

Action<in T1, in T2, ...> actionName;
  • T1, T2,...: ইনপুট প্যারামিটার টাইপ। কোনো রিটার্ন টাইপ থাকে না।

২. উদাহরণ: Action Delegate

এখানে একটি Action ডেলিগেট ব্যবহার করা হয়েছে, যা দুটি প্যারামিটার নেবে এবং কনসোলে মেসেজ প্রিন্ট করবে।

using System;

class Program
{
    static void Main()
    {
        // Action ডেলিগেট তৈরি, দুটি ইনপুট প্যারামিটার (int)
        Action<int, int> printSum = (a, b) => Console.WriteLine($"Sum: {a + b}");
        
        // Action ডেলিগেট ব্যবহার
        printSum(10, 20);
    }
}

আউটপুট:

Sum: 30

এখানে Action<int, int> একটি ডেলিগেট যা দুটি int ইনপুট প্যারামিটার নেয় এবং কোনো রিটার্ন ভ্যালু প্রদান না করে কেবল কনসোলে ফলাফল প্রিন্ট করে।

৩. Action ব্যবহার করে কিছু কাজ করা

Action ডেলিগেট ব্যবহার করা যেতে পারে বিভিন্ন কাজ (side effects) করার জন্য, যেমন ফাইল লেখার কাজ, UI আপডেট করা ইত্যাদি। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Action ডেলিগেট ব্যবহার করে একটি ডেটা কনসোলে প্রিন্ট করা হয়েছে:

Action<string> printMessage = (message) => Console.WriteLine(message);
printMessage("Hello, this is an Action delegate example!");

আউটপুট:

Hello, this is an Action delegate example!

Func এবং Action এর মধ্যে পার্থক্য

ফিচারFuncAction
রিটার্ন ভ্যালুএকটি রিটার্ন ভ্যালু থাকে। (TResult)কোনো রিটার্ন ভ্যালু নেই।
ইনপুট প্যারামিটার১ থেকে ১৬টি ইনপুট প্যারামিটার নিতে পারে।০ থেকে ১৬টি ইনপুট প্যারামিটার নিতে পারে।
ব্যবহারসাধারণত গণনা বা কিছু মান বের করার জন্য ব্যবহৃত।কোন নির্দিষ্ট কাজ (side effects) করার জন্য ব্যবহৃত।

যখন Func বা Action ব্যবহার করবেন?

  • Func ব্যবহার করুন যখন আপনাকে কোনো মান (result) ফেরত দেওয়ার প্রয়োজন হয়, যেমন গণনা বা ডেটা প্রক্রিয়াকরণ।
  • Action ব্যবহার করুন যখন আপনি কোনো নির্দিষ্ট কাজ বা কার্যকরী কাজ সম্পাদন করতে চান, যেমন কনসোলে কিছু প্রিন্ট করা বা UI পরিবর্তন করা, কিন্তু রিটার্ন ভ্যালুর প্রয়োজন নেই।

উপসংহার

Func এবং Action ডেলিগেট C#-এ ফাংশনাল প্রোগ্রামিং ধারণা প্রয়োগের জন্য অত্যন্ত কার্যকরী। Func ডেলিগেট একটি রিটার্ন ভ্যালু প্রদান করে, যেখানে Action কোনো রিটার্ন ভ্যালু ছাড়াই নির্দিষ্ট কার্য সম্পাদন করতে ব্যবহৃত হয়। এই দুই ডেলিগেটের ব্যবহার কোডে আরো নমনীয়তা এবং পুনঃব্যবহারযোগ্যতা আনে।

common.content_added_by

Custom Delegates এবং LINQ Methods

167
167

Custom Delegates এবং LINQ Methods দুটি গুরুত্বপূর্ণ ধারণা যা LINQ (Language Integrated Query) এবং C# প্রোগ্রামিংয়ের মধ্যে ব্যবহৃত হয়। LINQ ব্যবহার করার সময় কাস্টম ডিলিগেট এবং কাস্টম LINQ মেথডের সাহায্যে আপনি আরো জটিল কুয়েরি বা ডেটা প্রসেসিং করতে পারেন।

এখানে আমরা আলোচনা করব কাস্টম ডিলিগেট তৈরি করা এবং LINQ মেথডের মাধ্যমে কাস্টম অপারেশন কিভাবে সম্পন্ন করা যায়।


Custom Delegates

ডেলিগেট C# এ একটি টাইপ যা মেথডের রেফারেন্স ধারণ করে। এটি প্যারামিটার হিসেবে মেথড গ্রহণ করতে পারে এবং সেই মেথডের কার্যাবলী চালাতে পারে। যখন আপনি Custom Delegates ব্যবহার করবেন, তখন আপনি নিজের মতো মেথড সিগনেচার এবং কার্যপদ্ধতি তৈরি করতে পারবেন, যা LINQ বা অন্যান্য C# প্রোগ্রামিং টাস্কের জন্য উপযোগী হতে পারে।

Custom Delegate এর উদাহরণ:

// Custom Delegate Declaration
public delegate bool EmployeeFilter(Employee emp);

public class Employee
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Position { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        // Sample list of Employees
        List<Employee> employees = new List<Employee>
        {
            new Employee { Name = "John", Age = 25, Position = "Software Engineer" },
            new Employee { Name = "Jane", Age = 32, Position = "Manager" },
            new Employee { Name = "Jake", Age = 28, Position = "Developer" }
        };

        // Define custom delegate to filter employees older than 30
        EmployeeFilter filterOlderThan30 = emp => emp.Age > 30;

        // Use delegate to filter employees
        var filteredEmployees = employees.Where(emp => filterOlderThan30(emp)).ToList();

        // Display filtered employees
        foreach (var employee in filteredEmployees)
        {
            Console.WriteLine($"{employee.Name}, {employee.Age}");
        }
    }
}

এখানে:

  • EmployeeFilter হল একটি কাস্টম ডেলিগেট যা Employee অবজেক্টকে প্যারামিটার হিসেবে নেবে এবং একটি bool রিটার্ন করবে।
  • filterOlderThan30 হল একটি কাস্টম ডেলিগেট যা Employee অবজেক্টের বয়সের ওপর ভিত্তি করে ফিল্টার করবে।
  • Where মেথডে কাস্টম ডেলিগেটটি ব্যবহার করা হয়েছে।

LINQ Methods

LINQ মেথডগুলি হল এক ধরনের extension methods যা IEnumerable এবং IQueryable ইন্টারফেসে যোগ করা হয়। আপনি যদি LINQ এর মধ্যে কিছু কাস্টম অপারেশন করতে চান, তবে আপনি নিজেই কাস্টম LINQ মেথড তৈরি করতে পারেন। এই মেথডগুলি ডেটার উপর বিশেষ কাস্টম ফিল্টার, সিলেকশন, অথবা অন্যান্য অপারেশন করতে সহায়তা করে।

LINQ মেথডস সাধারণত অনেক ধরনের built-in অপারেশন সরবরাহ করে (যেমন Select(), Where(), OrderBy(), GroupBy(), ইত্যাদি), তবে আপনি চাইলে কাস্টম LINQ মেথডও তৈরি করতে পারেন যা একটি নির্দিষ্ট অপারেশন সম্পাদন করবে।

Custom LINQ Method উদাহরণ:

এখানে একটি কাস্টম LINQ মেথড তৈরি করার উদাহরণ দেওয়া হল যা একটি ইন্টিজার লিস্টে সমস্ত পজিটিভ নাম্বারগুলো ফিল্টার করবে:

// Custom LINQ Method Declaration
public static class CustomLinqMethods
{
    public static IEnumerable<int> FilterPositiveNumbers(this IEnumerable<int> source)
    {
        foreach (var number in source)
        {
            if (number > 0)
                yield return number;
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        // List of integers
        List<int> numbers = new List<int> { -10, 5, 0, 15, -20, 30 };

        // Use custom LINQ method
        var positiveNumbers = numbers.FilterPositiveNumbers();

        // Display filtered numbers
        foreach (var num in positiveNumbers)
        {
            Console.WriteLine(num);  // Output: 5, 15, 30
        }
    }
}

এখানে:

  • FilterPositiveNumbers একটি কাস্টম LINQ মেথড যা ইন্টিজারের লিস্টের মধ্যে পজিটিভ নাম্বারগুলো ফিল্টার করে রিটার্ন করবে।
  • this IEnumerable<int> ব্যবহার করা হয়েছে যাতে এটি একটি extension method হয়ে কাজ করে, যা আপনি যে কোনো ইন্টিজার লিস্টে ব্যবহার করতে পারেন।

LINQ এবং Custom Delegates এর সমন্বয়

LINQ কুয়েরিতে custom delegates ব্যবহার করলে আপনি কাস্টম ফিল্টারিং, ম্যানিপুলেশন বা কোনো নির্দিষ্ট লজিক প্রয়োগ করতে পারবেন যা ডিফল্ট LINQ অপারেশন দ্বারা সম্ভব নয়। যেমন, যদি আপনি একটি নির্দিষ্ট কন্ডিশনে custom delegate ব্যবহার করতে চান, তাহলে LINQ কুয়েরিতে সেটি প্রয়োগ করতে পারবেন।

Custom Delegate এবং LINQ Method এর সমন্বয়ের উদাহরণ:

// Custom Delegate
public delegate bool NumberCondition(int number);

// Custom LINQ method to apply delegate logic
public static class CustomLinqMethods
{
    public static IEnumerable<int> FilterByCondition(this IEnumerable<int> source, NumberCondition condition)
    {
        foreach (var number in source)
        {
            if (condition(number))
                yield return number;
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Sample list of numbers
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        // Custom delegate to filter even numbers
        NumberCondition isEven = n => n % 2 == 0;

        // Use custom LINQ method to apply delegate
        var evenNumbers = numbers.FilterByCondition(isEven);

        // Display the even numbers
        foreach (var num in evenNumbers)
        {
            Console.WriteLine(num);  // Output: 2, 4, 6, 8, 10
        }
    }
}

এখানে:

  • FilterByCondition একটি কাস্টম LINQ মেথড যা custom delegate ব্যবহার করে ডেটাকে ফিল্টার করে।
  • NumberCondition ডেলিগেট ব্যবহার করা হয়েছে, যা নম্বরটি even কিনা তা যাচাই করে।

সারাংশ

  • Custom Delegates LINQ কুয়েরিতে ডেটা প্রক্রিয়ার জন্য কাস্টম লজিক প্রয়োগ করতে ব্যবহৃত হয়। ডেলিগেটগুলি সাধারণত মেথড রেফারেন্স ধারণ করে এবং বিভিন্ন কাজ সম্পাদন করতে সাহায্য করে।
  • LINQ Methods এক্সটেনশন মেথডের মাধ্যমে কাস্টম ডেটা প্রক্রিয়ার জন্য তৈরি করা যেতে পারে, যাতে আপনি বিশেষভাবে আপনার প্রয়োজনে ডেটাকে ম্যানিপুলেট করতে পারেন।
  • Custom Delegates এবং LINQ Methods একসাথে ব্যবহার করে আপনি আরো শক্তিশালী ও কাস্টমাইজড কুয়েরি এবং ডেটা ম্যানিপুলেশন করতে পারেন।
common.content_added_by

Lambda Expressions এবং LINQ Query

173
173

Lambda Expressions এবং LINQ Query দুটি শক্তিশালী বৈশিষ্ট্য যা C# এবং LINQ-এর মাধ্যমে ডেটা পরিচালনা এবং কুয়েরি করার প্রক্রিয়াকে আরও সহজ এবং কার্যকরী করে তোলে। তবে, এগুলোর ব্যবহার এবং গঠন কিছুটা আলাদা।


Lambda Expressions

Lambda Expressions হল anonymous methods বা delegate methods যা C# কোডে ছোট এবং সংক্ষিপ্ত ফাংশন লিখতে ব্যবহৃত হয়। লাম্বডা এক্সপ্রেশন সাধারণত একটি ইনলাইন মেথড হিসেবে কাজ করে এবং এর সিগনেচার খুবই সোজা। এটি কোডের রিডেবিলিটি এবং কার্যকারিতা বৃদ্ধি করতে সাহায্য করে।

Lambda Expression এর সাধারণ সিনট্যাক্স:

(parameters) => expression

এখানে, parameters হল ইনপুট প্যারামিটার এবং expression হল সেই প্যারামিটারগুলির ভিত্তিতে পরিচালিত কোন এক্সপ্রেশন।

উদাহরণ:

Func<int, int, int> add = (x, y) => x + y;
Console.WriteLine(add(5, 3)); // আউটপুট: 8

এখানে, (x, y) => x + y একটি লাম্বডা এক্সপ্রেশন যা দুইটি পূর্ণসংখ্যাকে যোগ করে।


LINQ Query

LINQ Query হল Language Integrated Query-এর সংক্ষিপ্ত রূপ, যা C# এবং VB.NET-এ ডেটার উপর কুয়েরি চালাতে ব্যবহৃত হয়। LINQ ডেটাবেস, XML, ডেটা কালেকশন বা অন্য কোন ডেটা সোর্স থেকে ডেটা নিয়ে আসার জন্য কোডের মধ্যে সরাসরি কুয়েরি ব্যবহার করার সুবিধা দেয়।

LINQ Query সাধারণত SQL-like syntax ব্যবহার করে কাজ করে, এবং এটি একটি declarative পদ্ধতিতে লেখা হয়। LINQ কুয়েরি সুনির্দিষ্ট ফিল্টারিং, গ্রুপিং, সাজানো, এবং অন্যান্য অপারেশন করতে সহায়তা করে।

LINQ Query এর উদাহরণ:

var customers = from customer in context.Customers
                where customer.Country == "USA"
                select customer;

এখানে LINQ Query ব্যবহার করে Customers টেবিল থেকে সেই গ্রাহকদের ফিল্টার করা হয়েছে যাদের Country 'USA'।


Lambda Expressions এবং LINQ Query-এর তুলনা

Lambda Expressions এবং LINQ Query উভয়ই ডেটা প্রসেসিং এবং কুয়েরি লেখার জন্য ব্যবহার করা হলেও তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে।


LINQ Query Syntax

LINQ Query Syntax হল SQL-এর মতো একটি declarative syntax যা from, where, select, group by ইত্যাদি কিওয়ার্ড ব্যবহার করে ডেটা ফিল্টার, সাজানো এবং গ্রুপ করার জন্য। এটি SQL এর মতো কাজ করে এবং SQL কোডের সাথে পরিচিত যারা তাদের জন্য এটি সহজ হতে পারে।

LINQ Query Syntax এর উদাহরণ:

var customers = from customer in context.Customers
                where customer.City == "New York"
                select customer;

এখানে, আমরা from কিওয়ার্ড দিয়ে ডেটা সোর্সের নাম এবং তারপরে where কিওয়ার্ড ব্যবহার করে শর্ত (যেমন: City == "New York") যোগ করেছি।


Lambda Expression Syntax

Lambda Expression সিনট্যাক্স হল এক ধরনের function-style syntax, যা LINQ এর সাথে আরও বেশি ব্যবহৃত হয়। এটি delegate বা anonymous method হিসেবে কাজ করে এবং কোডের মধ্যে inline ফাংশন ব্যবহারের সুবিধা দেয়।

Lambda Expression Syntax এর উদাহরণ:

var customers = context.Customers
                       .Where(customer => customer.City == "New York")
                       .ToList();

এখানে, Where মেথডের মধ্যে একটি লাম্বডা এক্সপ্রেশন (customer => customer.City == "New York") ব্যবহৃত হয়েছে যা City এর মান New York হলে সেই গ্রাহকদের রিটার্ন করবে।


LINQ Query vs Lambda Expression

বিষয়LINQ QueryLambda Expression
সিনট্যাক্সSQL-এর মতো declarative syntaxFunction-style syntax
পাঠযোগ্যতাSQL এর মতো, কিছুটা সহজ এবং পরিষ্কার হতে পারেInline কোড, কিছুটা কম পরিষ্কার হতে পারে
বৈশিষ্ট্যকুয়েরি খুব সহজে লেখা যায়, এবং ক্লাসিকাল SQL-এর মতোকমপ্লেক্স ফাংশনাল প্রোগ্রামিংয়ের জন্য আদর্শ
ব্যবহারসহজ কুয়েরি বা জটিল জোইন অপারেশনগুলোর জন্যদ্রুত এবং নমনীয় কুয়েরি অপারেশনগুলোর জন্য

উদাহরণ: LINQ Query এবং Lambda Expression ব্যবহার

ধরা যাক, আমাদের Customers টেবিল রয়েছে, এবং আমরা সেই গ্রাহকদের খুঁজে বের করতে চাই যারা "New York"-এ বাস করেন এবং যাদের বয়স ৩০ এর বেশি।

LINQ Query Syntax:

var result = from customer in context.Customers
             where customer.City == "New York" && customer.Age > 30
             select customer;

Lambda Expression Syntax:

var result = context.Customers
                    .Where(customer => customer.City == "New York" && customer.Age > 30)
                    .ToList();

দুজনই একই ফলাফল দেয়, কিন্তু LINQ Query-এ আপনি from, where, select কিওয়ার্ড ব্যবহার করছেন, যেখানে Lambda Expression সরাসরি Where এবং অন্যান্য মেথডের মাধ্যমে ফিল্টারিং এবং প্রসেসিং করছে।


LINQ Query এবং Lambda Expression-এর ব্যবহার

LINQ Query সাধারণত ব্যবহার করা হয় যখন আপনি SQL এর মতো সিনট্যাক্সে কোড লেখতে পছন্দ করেন, আর Lambda Expression ব্যবহার করা হয় যখন আপনি কোডে আরও কার্যকরী, সংক্ষিপ্ত এবং জটিল ফাংশন ব্যবহার করতে চান।

  • LINQ Query সাধারণত সহজ এবং পরিষ্কার থাকে যখন সহজ ডেটা প্রসেসিং করতে হয় (যেমন: select, join, group by ইত্যাদি)।
  • Lambda Expressions অনেক সময় বেশি কার্যকরী হয় যখন আপনি Where, Select, OrderBy, GroupBy, Aggregate এর মতো মেথডগুলোকে চেইন করে একাধিক কার্যক্রম সম্পাদন করতে চান।

উপসংহার

Lambda Expressions এবং LINQ Query উভয়ই LINQ-এর সঙ্গে ব্যবহৃত হয় এবং ডেটা প্রসেসিংয়ের জন্য শক্তিশালী সরঞ্জাম। তবে, এগুলোর ব্যবহার এবং সিনট্যাক্সে পার্থক্য রয়েছে। আপনি যেকোনো একটিকে ব্যবহার করতে পারেন আপনার প্রোজেক্টের প্রয়োজন অনুসারে, কিন্তু উভয়ই অত্যন্ত কার্যকরী এবং ডেটা প্রসেসিংকে সহজ করে তোলে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion